#include <stdlib.h>
#include <getch.h>
#include<string.h>
#include <student.h>
#include <user.h>
#include<dao.h>
#include<list.h>

List* admin_list = NULL;


static void admin_add(List* list)
{
	pf("\n%s\n\n",__func__);
	pf("请输入学生姓名 性别 学号: ");
	char str_name[10]={};
	char str_sex[5]={};
	int str_id=0;
	sf("%s",str_name);
	sf("%s",str_sex);
	sf("%d",&str_id);
	Student* stu = malloc(STU_SIZE);
	strcpy(stu->name,str_name);
	strcpy(stu->sex,str_sex);
	stu->id = str_id;
	add_tail_list(list,stu);
	any_key();
}

static void admin_del(List* list)
{
	pf("\n%s\n\n",__func__);
	char name[20];
	printf("\n请输入要删除的姓名:");
	gets(name);
	int cmp(const void* ptr1,const void*ptr2)
	{
		const Student* stu = ptr1;
		const char* name = ptr2;
		return strcmp(stu->name,name);
	}
	printf("\n删除%s\n",del_value_list(list,name,cmp)?"成功":"失败");
	any_key();
}

static void admin_chg(List* list)
{
	pf("\n%s\n\n",__func__);
	printf("\n请输入要修改的学号:\n");
	int id=0;
	scanf("%d",&id);	
	int cmp(const void* ptr1,const void* ptr2)
	{
		const Student* stu =ptr1;
		const int* id = ptr2;
		if(stu->id > *id)
			return 1;
		else if(stu->id <*id)
			return -1;
		else 
			return 0;
	}
	int index=find_list(user_list,&id,cmp);
	Node* node = list->head;
	for(int i=0;i<index;i++)
		node=node->next;
		Student* stu = node->ptr;
		printf("请输入修改后的姓名 性别 学号:\n");
		scanf("%s %s %d",stu->name,stu->sex,&stu->id);
		any_key();
}


static void admin_menu(void)
{
	for(;;)
	{
		system("clear");
		pf("******学生信息管理******\n");
		pf("1、增加\n");
		pf("2、删除\n");
		pf("3、修改\n");
		pf("4、返回\n");
		
		switch(getch())
		{
			case '1': admin_add(user_list); break;
			case '2': admin_del(user_list); break;
			case '3': admin_chg(user_list); break;
			case '4': return;
		}
	}
}

// 登录
State admin_login()
{
	int i=0;
	char* admin_id="admin";
	char* admin_psd="123456";
	char str_admin[10]={};
	char psd_admin[20]={};	
	while(1)
		{
		system("clear");
		printf("=========进入管理员界面========\n");
		printf("\n请输入用户名： \n");
		scanf("%s",str_admin);
		if(i == 3)
		{
			printf("用户名输入错误三次，退出登陆\n");
			any_key();
			return	NameError;
		}
		if(strcmp(str_admin,admin_id)!=0)
		{
			printf("用户名错误，请重新输入\n");
			i++;
			any_key();
			continue;
			system("clear");
		}
	
		if(strcmp(str_admin,admin_id)==0 && 3>i)
		{
			printf("\n请输入密码:\n");
			scanf("%s",psd_admin);
			if(0==strcmp(psd_admin,admin_psd))
			{
				printf("登陆成功\n");
				i=0;
				break;
			}
			if(0!=strcmp(psd_admin,admin_psd))
			{
				i++;
				printf("密码错误，还有%d次机会\n",3-i);
				any_key();
				system("clear");
			}
			else
			return PassError;
		}
	
	}

	admin_menu();
	return LoginOk;
}
